#include <stdio.h>
#include <errno.h>
#include <zconf.h>
#include <fcntl.h>
#include <table/CHashTable.h>
#include "rtp_unit.h"
#include "PBufStr.h"
#include "rtsp_service.h"
#include "rtsp_resolver.h"
#include "Debug.h"

int main() {
    int ret = 0;
    RTSPService service;
    gword_hash_table_init();
    ret = RTSPService_init(&service, "0.0.0.0", 8888, 100, 10080, 100);
    if (ret == RTSPSERVICE_RET_SUCCEED) {
        while (1) {
            sleep(1);
        }
    }
//    FILE *fp = fopen("/home/linux/git/h264_to_rtp/record.h264", "rb");
//    if (fp == 0) {
//        printf("file open erroe\n");
//        return -1;
//    }
//    RTPUnit unit;
//    RTPUnit_init(&unit, NULL, fp);
//    while (1) {
//        ret = RTPUnit_frame_read(&unit);
//        if (ret == RTSPUNIT_RET_ERR)
//            break;
//        else if (ret == RLBUFFILE_RET_EOF) {
//            fseek(fp, 0, SEEK_SET);
//        }
//    }
//    int ret;
//    unsigned count = 0;
//    FILE *fp = fopen("/home/linux/git/h264_to_rtp/record.h264", "rb");
//    if (fp == 0) {
//        printf("file open erroe\n");
//        return -1;
//    }
//    RTPUnit unit;
//    RTPUnit_init(&unit, &service, fp);
//    RTPUser user;
//    RTPUser_udp_init(&user, "0.0.0.0", 18880, 18881);
//    user.c_rtp_in.sin_family = AF_INET;
//    user.c_rtp_in.sin_addr.s_addr = inet_addr("127.0.0.1");
//    user.c_rtp_in.sin_port = htons(1234);
//    TWListNode node;
//    TWListNode_init(&node, &user);
//    RTPUnit_client_add(&unit, &node);
//    while (1) {
//        ret = RTPUnit_frame_read(&unit);
//        if (ret != RLBUFFILE_RET_SUCCEED)
//            break;
//        count += unit.pbbuf.w_idx + 4;
//        printf("---%x:\n", count);
//        RTPUnit_pack_send(&unit);
//        PBufArray_reset(&unit.pbbuf);
//    }

    return 0;
}
